{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "from IPython.display import Image"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Contents\n",
    "--------\n",
    "1. What is machine learning\n",
    "2. Different ways of learning from data\n",
    "3. Why probabilistic graphical models\n",
    "4. Major types of PGMs"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 1. What is machine learning\n",
    "Machine learning is a scientific discipline that explores the construction and study of algorithms that can learn from data. Such algorithms operate by building a model from example inputs and using that to make predictions or decisions, rather than following strictly static program instructions.\n",
    "\n",
    "We can take an example of predicting the type of flower based on the sepal length and width of the flower. Let's say we have some data (discretized iris data set on sepal length and width). The dataset looks something like this:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>length</th>\n",
       "      <th>width</th>\n",
       "      <th>type</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>47</th>\n",
       "      <td>5</td>\n",
       "      <td>3</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>92</th>\n",
       "      <td>6</td>\n",
       "      <td>3</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>5</td>\n",
       "      <td>4</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>106</th>\n",
       "      <td>5</td>\n",
       "      <td>2</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>40</th>\n",
       "      <td>5</td>\n",
       "      <td>4</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>5</td>\n",
       "      <td>3</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>10</th>\n",
       "      <td>5</td>\n",
       "      <td>4</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>35</th>\n",
       "      <td>5</td>\n",
       "      <td>3</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>22</th>\n",
       "      <td>5</td>\n",
       "      <td>4</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>123</th>\n",
       "      <td>6</td>\n",
       "      <td>3</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>139</th>\n",
       "      <td>7</td>\n",
       "      <td>3</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>117</th>\n",
       "      <td>8</td>\n",
       "      <td>4</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>23</th>\n",
       "      <td>5</td>\n",
       "      <td>3</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>134</th>\n",
       "      <td>6</td>\n",
       "      <td>3</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>39</th>\n",
       "      <td>5</td>\n",
       "      <td>3</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>37</th>\n",
       "      <td>5</td>\n",
       "      <td>3</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>32</th>\n",
       "      <td>5</td>\n",
       "      <td>4</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>55</th>\n",
       "      <td>6</td>\n",
       "      <td>3</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>57</th>\n",
       "      <td>5</td>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>15</th>\n",
       "      <td>6</td>\n",
       "      <td>4</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>146</th>\n",
       "      <td>6</td>\n",
       "      <td>2</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>114</th>\n",
       "      <td>6</td>\n",
       "      <td>3</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>102</th>\n",
       "      <td>7</td>\n",
       "      <td>3</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>78</th>\n",
       "      <td>6</td>\n",
       "      <td>3</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>82</th>\n",
       "      <td>6</td>\n",
       "      <td>3</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>79</th>\n",
       "      <td>6</td>\n",
       "      <td>3</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>71</th>\n",
       "      <td>6</td>\n",
       "      <td>3</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>77</th>\n",
       "      <td>7</td>\n",
       "      <td>3</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>20</th>\n",
       "      <td>5</td>\n",
       "      <td>3</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>16</th>\n",
       "      <td>5</td>\n",
       "      <td>4</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>133</th>\n",
       "      <td>6</td>\n",
       "      <td>3</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>132</th>\n",
       "      <td>6</td>\n",
       "      <td>3</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>38</th>\n",
       "      <td>4</td>\n",
       "      <td>3</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>144</th>\n",
       "      <td>7</td>\n",
       "      <td>3</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>98</th>\n",
       "      <td>5</td>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>138</th>\n",
       "      <td>6</td>\n",
       "      <td>3</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>103</th>\n",
       "      <td>6</td>\n",
       "      <td>3</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>30</th>\n",
       "      <td>5</td>\n",
       "      <td>3</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>5</td>\n",
       "      <td>3</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>148</th>\n",
       "      <td>6</td>\n",
       "      <td>3</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>45</th>\n",
       "      <td>5</td>\n",
       "      <td>3</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>51</th>\n",
       "      <td>6</td>\n",
       "      <td>3</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>56</th>\n",
       "      <td>6</td>\n",
       "      <td>3</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>109</th>\n",
       "      <td>7</td>\n",
       "      <td>4</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>110</th>\n",
       "      <td>6</td>\n",
       "      <td>3</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>12</th>\n",
       "      <td>5</td>\n",
       "      <td>3</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>141</th>\n",
       "      <td>7</td>\n",
       "      <td>3</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>143</th>\n",
       "      <td>7</td>\n",
       "      <td>3</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>93</th>\n",
       "      <td>5</td>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>65</th>\n",
       "      <td>7</td>\n",
       "      <td>3</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>24</th>\n",
       "      <td>5</td>\n",
       "      <td>3</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>69</th>\n",
       "      <td>6</td>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>25</th>\n",
       "      <td>5</td>\n",
       "      <td>3</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>140</th>\n",
       "      <td>7</td>\n",
       "      <td>3</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>28</th>\n",
       "      <td>5</td>\n",
       "      <td>3</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>135</th>\n",
       "      <td>8</td>\n",
       "      <td>3</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>131</th>\n",
       "      <td>8</td>\n",
       "      <td>4</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>42</th>\n",
       "      <td>4</td>\n",
       "      <td>3</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>31</th>\n",
       "      <td>5</td>\n",
       "      <td>3</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>43</th>\n",
       "      <td>5</td>\n",
       "      <td>4</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>150 rows × 3 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "     length  width  type\n",
       "47        5      3     0\n",
       "92        6      3     1\n",
       "5         5      4     0\n",
       "106       5      2     2\n",
       "40        5      4     0\n",
       "6         5      3     0\n",
       "10        5      4     0\n",
       "35        5      3     0\n",
       "22        5      4     0\n",
       "123       6      3     2\n",
       "139       7      3     2\n",
       "117       8      4     2\n",
       "23        5      3     0\n",
       "134       6      3     2\n",
       "39        5      3     0\n",
       "37        5      3     0\n",
       "32        5      4     0\n",
       "55        6      3     1\n",
       "57        5      2     1\n",
       "15        6      4     0\n",
       "146       6      2     2\n",
       "114       6      3     2\n",
       "102       7      3     2\n",
       "78        6      3     1\n",
       "82        6      3     1\n",
       "79        6      3     1\n",
       "71        6      3     1\n",
       "77        7      3     1\n",
       "20        5      3     0\n",
       "16        5      4     0\n",
       "..      ...    ...   ...\n",
       "133       6      3     2\n",
       "132       6      3     2\n",
       "38        4      3     0\n",
       "144       7      3     2\n",
       "98        5      2     1\n",
       "138       6      3     2\n",
       "103       6      3     2\n",
       "30        5      3     0\n",
       "2         5      3     0\n",
       "148       6      3     2\n",
       "45        5      3     0\n",
       "51        6      3     1\n",
       "56        6      3     1\n",
       "109       7      4     2\n",
       "110       6      3     2\n",
       "12        5      3     0\n",
       "141       7      3     2\n",
       "143       7      3     2\n",
       "93        5      2     1\n",
       "65        7      3     1\n",
       "24        5      3     0\n",
       "69        6      2     1\n",
       "25        5      3     0\n",
       "140       7      3     2\n",
       "28        5      3     0\n",
       "135       8      3     2\n",
       "131       8      4     2\n",
       "42        4      3     0\n",
       "31        5      3     0\n",
       "43        5      4     0\n",
       "\n",
       "[150 rows x 3 columns]"
      ]
     },
     "execution_count": 5,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "%run ../scripts/1/discretize.py\n",
    "data"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 2. Different ways of learning from data\n",
    "\n",
    "Now let's say we want to predict the type of flower for a new given data point. There are multiple ways to solve this problem. We will consider these two ways in some detail:  \n",
    "\n",
    "1. We could find a function which can directly map an input value to it's class label. \n",
    "2. We can find the probability distributions over the variables and then use this distribution to answer queries about the new data point.\n",
    "\n",
    "There are a lot of algorithms for finding a mapping function. For example linear regression tries to find a linear equation which explains the data. Support vector machine tries to find a plane which separates the data points. Decision Tree tries to find a set of simple greater than and less than equations to classify the data. Let's try to apply Decision Tree on this data set.\n",
    "\n",
    "We can plot the data and it looks something like this:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.collections.PathCollection at 0x7f109313ca58>"
      ]
     },
     "execution_count": 13,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\nZctyu90c6jnE1ODUisoVp1Np4lqcr/3Gc+j6RaanB26Wy72V4zikUpOk02/wwgt7qKt7uJr4irJW\n1LRFZUtzHIefv/pzrmWu0bytGcO8x+bXsynknOTzn/g8sViMYrHI+fNXuXx5DstqwjBCCCGwrCJS\nTtDTE+Tw4V7i8fg6t0h5FKl56IqyzHEczvadpe9GH7bfJlQXWtoOUEpy6RzVVJWWUAsnHz95x1h4\npVJhfHyCbLaI40j8fjdtbS1qVaiyrlRCV5T3KZfLjI6Ncn3kOqVKCcM0aIw1srNnp6ptrmxqKqEr\niqJsEStN6OqmqKIoyhahErqiKMoWoRK6oijKFqESuqIoyhahErqiKMoWoRK6oijKFqESuqIoyhah\nErqiKMoWoRK6oijKFqESuqIoyhahErqiKMoWoRK6oijKFqESuqIoyhahErqiKMoWoRK6oijKFvHA\nhC6E+L+FELNCiAv3eP4ZIURaCHFu+d8/X/0wFUVRlAdZSQ/9m8BnHnDMq1LKw8v//qdViOsj6dSp\nUxsdwppS7fvo2sptg63fvpV6YEKXUr4GLD7gsAfupPEo2Oq/VKp9H11buW2w9du3Uqs1hv64EOK8\nEOIHQojdq/QzFUVRlIdgrMLPOAu0SymLQojngL8Belfh5yqKoigPYUWbRAshOoDvSSn3r+DYYeCI\nlHLhLs+pHaIVRVE+gJVsEr3SHrrgHuPkQogGKeXs8uNjLH1I3JHMVxqQoiiK8sE8MKELIb4FnATi\nQogx4A8BFyCllN8AviyE+CdADSgBX127cBVFUZR7WdGQi6IoirL5rctKUSGEWwhxRgjRJ4S4KIT4\nw/V43fUkhNCWF1a9vNGxrDYhxIgQ4p3l9+/NjY5ntQkhwkKI/yyE6BdCXBZCHN/omFaLEKJ3+X07\nt/x/RgjxOxsd12oSQvwzIcQlIcQFIcSfCyFcGx3TahFC/O5yzry4kvdt3XroQgjf8kwYHfgV8DtS\nyi2THIQQ/ww4AoSklC9tdDyrSQgxxNKN7getR/hIEkL8v8AvpZTfFEIYgE9Kmd3gsFadEEIDJoDj\nUsrxjY5nNQghmoHXgJ1SyqoQ4i+BH0gp/2yDQ/vQhBB7gP8EHAUs4EfAfyOlHLrXOetWy0VKWVx+\n6GZp7H7LjPUIIVqB54H/sNGxrBHBFq37I4QIAU9LKb8JIKW0tmIyX/YsMLhVkvktdMD/7ocxMLXB\n8ayWXcAZKWVFSmkDrwJfut8J6/ZHujwk0QfMAD+RUr61Xq+9Dv434PfZQh9S7yOBnwgh3hJC/OON\nDmaVdQFJIcQ3l4clviGE8G50UGvkqyz1+LYMKeUU8K+AMWASSEspf7qxUa2aS8DTQoioEMLHUqex\n7X4nrGcP3ZFSHgJageNbZUWpEOIFYFZKeZ77TO/8iHtSSnmYpV+o3xZCPLXRAa0iAzgM/JvlNhaB\n/2FjQ1p9QggTeAn4zxsdy2oSQkSAzwMdQDMQEEL8/Y2NanVIKa8C/yvwE+CHQB9g3++cdb+MXr6c\n/QXw2fV+7TXyJPDS8jjzfwI+LoT4yI/f3UpKOb38/zzwHeDYxka0qiaAcSnl28tff5ulBL/VPAec\nXX4Pt5JngSEp5cLysMRfA09scEyrRkr5TSnlY1LKk0AauH6/49drlkudECK8/NgLfAq4uh6vvdak\nlH8gpWyXUnYD/wXwcynl1zY6rtUihPAJIQLLj/3Ap1m6FNwSlhfFjQsh3i1X8UngygaGtFZ+nS02\n3LJsDDghhPAIIQRL71//Bse0aoQQieX/24EvAt+63/GrUctlJZqAP12+y64Bfyml/OE6vbby4TQA\n31ku22AAfy6lfGWDY1ptvwP8+fKwxBDwmxscz6paHn99FvivNzqW1SalfFMI8W2WhiNqy/9/Y2Oj\nWlV/JYSIsdS2//ZBN+zVwiJFUZQtYktORVMURXkUqYSuKIqyRaiEriiKskWohK4oirJFqISuKIqy\nRaiErijK/99OHcgAAAAADPK3vsdXEDEhdIAJoQNMBBlvSltZVsZjAAAAAElFTkSuQmCC\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7f10931b5b00>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "%matplotlib inline\n",
    "import matplotlib.pyplot as plt\n",
    "import numpy as np\n",
    "\n",
    "# Adding a little bit of noise so that it's easier to visualize\n",
    "data_with_noise = data.iloc[:, :2] + np.random.normal(loc=0, scale=0.1, size=(150, 2))\n",
    "plt.scatter(data_with_noise.length, data_with_noise.width, c=['b', 'g', 'r'], s=200, alpha=0.3)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "In the plot we can easily see that the blue points are concentrated on the top-left corner, green ones in bottom left and red ones in top right. \n",
    "\n",
    "Now let's try to train a Decision Tree on this data."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 0, 1, 0, 0,\n",
       "       1, 0, 1, 1, 0, 1, 1])"
      ]
     },
     "execution_count": 14,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "from sklearn.tree import DecisionTreeClassifier\n",
    "from sklearn.cross_validation import train_test_split\n",
    "\n",
    "X_train, X_test, y_train, y_test = train_test_split(data.ix[:, ['length', 'width']].values, data.type.values, test_size=0.2)\n",
    "\n",
    "classifier = DecisionTreeClassifier(max_depth=4)\n",
    "classifier.fit(X_train, y_train)\n",
    "classifier.predict(X_test)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.56666666666666665"
      ]
     },
     "execution_count": 15,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "classifier.score(X_test, y_test)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "So, in this case we got a classification accuracy of 56.67 %.\n",
    "\n",
    "Now moving on to our second approach using a probabilistic model.\n",
    "The most obvious way to do this classification task would be to compute a Joint Probability Distribution over all these variables and then marginalize and reduce over these according to our new data point to get the probabilities of classes."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "X_train, X_test = data[:120], data[120:]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>length</th>\n",
       "      <th>width</th>\n",
       "      <th>type</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>47</th>\n",
       "      <td>5</td>\n",
       "      <td>3</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>92</th>\n",
       "      <td>6</td>\n",
       "      <td>3</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>5</td>\n",
       "      <td>4</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>106</th>\n",
       "      <td>5</td>\n",
       "      <td>2</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>40</th>\n",
       "      <td>5</td>\n",
       "      <td>4</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>5</td>\n",
       "      <td>3</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>10</th>\n",
       "      <td>5</td>\n",
       "      <td>4</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>35</th>\n",
       "      <td>5</td>\n",
       "      <td>3</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>22</th>\n",
       "      <td>5</td>\n",
       "      <td>4</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>123</th>\n",
       "      <td>6</td>\n",
       "      <td>3</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>139</th>\n",
       "      <td>7</td>\n",
       "      <td>3</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>117</th>\n",
       "      <td>8</td>\n",
       "      <td>4</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>23</th>\n",
       "      <td>5</td>\n",
       "      <td>3</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>134</th>\n",
       "      <td>6</td>\n",
       "      <td>3</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>39</th>\n",
       "      <td>5</td>\n",
       "      <td>3</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>37</th>\n",
       "      <td>5</td>\n",
       "      <td>3</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>32</th>\n",
       "      <td>5</td>\n",
       "      <td>4</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>55</th>\n",
       "      <td>6</td>\n",
       "      <td>3</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>57</th>\n",
       "      <td>5</td>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>15</th>\n",
       "      <td>6</td>\n",
       "      <td>4</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>146</th>\n",
       "      <td>6</td>\n",
       "      <td>2</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>114</th>\n",
       "      <td>6</td>\n",
       "      <td>3</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>102</th>\n",
       "      <td>7</td>\n",
       "      <td>3</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>78</th>\n",
       "      <td>6</td>\n",
       "      <td>3</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>82</th>\n",
       "      <td>6</td>\n",
       "      <td>3</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>79</th>\n",
       "      <td>6</td>\n",
       "      <td>3</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>71</th>\n",
       "      <td>6</td>\n",
       "      <td>3</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>77</th>\n",
       "      <td>7</td>\n",
       "      <td>3</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>20</th>\n",
       "      <td>5</td>\n",
       "      <td>3</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>16</th>\n",
       "      <td>5</td>\n",
       "      <td>4</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>44</th>\n",
       "      <td>5</td>\n",
       "      <td>4</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>147</th>\n",
       "      <td>6</td>\n",
       "      <td>3</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>100</th>\n",
       "      <td>6</td>\n",
       "      <td>3</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>101</th>\n",
       "      <td>6</td>\n",
       "      <td>3</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>52</th>\n",
       "      <td>7</td>\n",
       "      <td>3</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>19</th>\n",
       "      <td>5</td>\n",
       "      <td>4</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>5</td>\n",
       "      <td>4</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>137</th>\n",
       "      <td>6</td>\n",
       "      <td>3</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>64</th>\n",
       "      <td>6</td>\n",
       "      <td>3</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>80</th>\n",
       "      <td>6</td>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>68</th>\n",
       "      <td>6</td>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>97</th>\n",
       "      <td>6</td>\n",
       "      <td>3</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>127</th>\n",
       "      <td>6</td>\n",
       "      <td>3</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>67</th>\n",
       "      <td>6</td>\n",
       "      <td>3</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>48</th>\n",
       "      <td>5</td>\n",
       "      <td>4</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>50</th>\n",
       "      <td>7</td>\n",
       "      <td>3</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>136</th>\n",
       "      <td>6</td>\n",
       "      <td>3</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>107</th>\n",
       "      <td>7</td>\n",
       "      <td>3</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>108</th>\n",
       "      <td>7</td>\n",
       "      <td>2</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>59</th>\n",
       "      <td>5</td>\n",
       "      <td>3</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>122</th>\n",
       "      <td>8</td>\n",
       "      <td>3</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>96</th>\n",
       "      <td>6</td>\n",
       "      <td>3</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>41</th>\n",
       "      <td>4</td>\n",
       "      <td>2</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>33</th>\n",
       "      <td>6</td>\n",
       "      <td>4</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>73</th>\n",
       "      <td>6</td>\n",
       "      <td>3</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>84</th>\n",
       "      <td>5</td>\n",
       "      <td>3</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>75</th>\n",
       "      <td>7</td>\n",
       "      <td>3</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>105</th>\n",
       "      <td>8</td>\n",
       "      <td>3</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>36</th>\n",
       "      <td>6</td>\n",
       "      <td>4</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>53</th>\n",
       "      <td>6</td>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>120 rows × 3 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "     length  width  type\n",
       "47        5      3     0\n",
       "92        6      3     1\n",
       "5         5      4     0\n",
       "106       5      2     2\n",
       "40        5      4     0\n",
       "6         5      3     0\n",
       "10        5      4     0\n",
       "35        5      3     0\n",
       "22        5      4     0\n",
       "123       6      3     2\n",
       "139       7      3     2\n",
       "117       8      4     2\n",
       "23        5      3     0\n",
       "134       6      3     2\n",
       "39        5      3     0\n",
       "37        5      3     0\n",
       "32        5      4     0\n",
       "55        6      3     1\n",
       "57        5      2     1\n",
       "15        6      4     0\n",
       "146       6      2     2\n",
       "114       6      3     2\n",
       "102       7      3     2\n",
       "78        6      3     1\n",
       "82        6      3     1\n",
       "79        6      3     1\n",
       "71        6      3     1\n",
       "77        7      3     1\n",
       "20        5      3     0\n",
       "16        5      4     0\n",
       "..      ...    ...   ...\n",
       "44        5      4     0\n",
       "147       6      3     2\n",
       "100       6      3     2\n",
       "101       6      3     2\n",
       "52        7      3     1\n",
       "19        5      4     0\n",
       "4         5      4     0\n",
       "137       6      3     2\n",
       "64        6      3     1\n",
       "80        6      2     1\n",
       "68        6      2     1\n",
       "97        6      3     1\n",
       "127       6      3     2\n",
       "67        6      3     1\n",
       "48        5      4     0\n",
       "50        7      3     1\n",
       "136       6      3     2\n",
       "107       7      3     2\n",
       "108       7      2     2\n",
       "59        5      3     1\n",
       "122       8      3     2\n",
       "96        6      3     1\n",
       "41        4      2     0\n",
       "33        6      4     0\n",
       "73        6      3     1\n",
       "84        5      3     1\n",
       "75        7      3     1\n",
       "105       8      3     2\n",
       "36        6      4     0\n",
       "53        6      2     1\n",
       "\n",
       "[120 rows x 3 columns]"
      ]
     },
     "execution_count": 17,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "X_train"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "length  width  type\n",
       "4       2      0       0.008333\n",
       "        3      0       0.033333\n",
       "5       2      1       0.033333\n",
       "               2       0.008333\n",
       "        3      0       0.200000\n",
       "               1       0.016667\n",
       "        4      0       0.133333\n",
       "6       2      1       0.075000\n",
       "               2       0.025000\n",
       "        3      1       0.225000\n",
       "               2       0.200000\n",
       "        4      0       0.041667\n",
       "7       2      2       0.008333\n",
       "        3      1       0.066667\n",
       "               2       0.116667\n",
       "        4      2       0.008333\n",
       "8       3      2       0.033333\n",
       "        4      2       0.016667\n",
       "dtype: float64"
      ]
     },
     "execution_count": 18,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# Computing the joint probability distribution over the training data\n",
    "joint_prob = data.groupby(['length', 'width', 'type']).size() / 120\n",
    "joint_prob"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([1, 1, 0, 2, 1, 1, 1, 0, 0, 1, 0, 1, 1, 2, 1, 0, 2, 2, 1, 2, 0, 1, 0,\n",
       "       2, 0, 2, 2, 0, 0, 0])"
      ]
     },
     "execution_count": 24,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# Predicting values\n",
    "\n",
    "# Selecting just the feature variables.\n",
    "X_test_features = X_test.iloc[:, :2].values\n",
    "X_test_actual_results = X_test.iloc[:, 2].values\n",
    "\n",
    "predicted_values = []\n",
    "for i in X_test_features:\n",
    "    predicted_values.append(np.argmax(joint_prob[i[0], i[1]]))\n",
    "    \n",
    "predicted_values = np.array(predicted_values)\n",
    "predicted_values"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([False, False,  True,  True,  True, False, False,  True,  True,\n",
       "       False,  True,  True,  True,  True, False,  True,  True,  True,\n",
       "        True, False,  True,  True,  True,  True,  True,  True,  True,\n",
       "        True,  True,  True], dtype=bool)"
      ]
     },
     "execution_count": 25,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# Comparing results with the actual data.\n",
    "predicted_values == X_test_actual_results"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 27,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0.766666666667\n"
     ]
    }
   ],
   "source": [
    "score = (predicted_values == X_test_actual_results).sum() / 30\n",
    "print(score)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "collapsed": true
   },
   "source": [
    "### Why Probabilistic Graphical Models\n",
    "\n",
    "In the previous example we saw how Bayesian Inference works. We construct a Joint Distribution over the data and then condition on the observed variable to compute the posterior distribution. And then we query on this posterior distribution to predict the values of new data points."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "But the problem with this method is that the Joint Probability Distribution is exponential to the number of states (cardinality) of each variable. So, for problems having a lot of features or having high cardinality of features, inference becomes a difficult task because of computational limitations. For example, for 10 random variables each having 10 states, the size of the Joint Distribution would be 10^10."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "__Proababilistic Graphical Models (PGM)__: PGM is a technique of compactly representing Joint Probability Distribution over random variables by exploiting the (conditional) independencies between the variables. PGM also provides us methods for efficiently doing inference over these joint distributions.\n",
    "\n",
    "Each graphical model is characterized by a graph structure (can be directed, undirected or both) and a set of parameters associated with each graph.\n",
    "\n",
    "The problem in the above example can be represented using a Bayesian Model (a type of graphical model) as:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 28,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAA8AAAALQCAYAAABfdxm0AAA0aUlEQVR42uzdCZiVdd0//jMzZ5hh\nFmZYBGRR3Hncwn3DxNAwMTcq7MHAfi5YmqhUlJqW5kM+VKTkFpqG+aA/Qk0yzSV+WqYo5i4qigsI\nKCoiiJL0n//9Yc7xOY7szHLOzOt1XZ8L5syZc858z33Pdb/Pd0ulAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAACgmXRJqn9Sw5IakdTopC5IalxS1yV1Q1LTMzU7qVdyalbO967L1NjMz4/K\nPN7QzON30dSQV7onNaCJz/19k6rV1AAAtETQjYvd05KakLlwXVRcUvJu5826zdp+x10e7rfXfo8f\n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\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPD/tweHBAAAAACC/r/2hBEAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nVgHccFm98S/9ywAAAABJRU5ErkJggg==\n",
      "text/plain": [
       "<IPython.core.display.Image object>"
      ]
     },
     "execution_count": 28,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "Image(filename='../images/1/Iris_BN.png')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "In this case the parameters of the network would be $ P(L) $, $ P(W) $ and $ P(T | L, W) $. So, we will need to store 5 values for $ L $, 3 values for $ W $ and 45 values for $ P(T | L, W) $. So, a total of 45 + 5 + 3 = 53 values to completely parameterize the network which is actually more than 45 values which we need for $ P (T, L, W) $. But in the cases of bigger networks graphical models help in saving space. We can take the example of the student network shown below:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 29,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\nRYsCWQQTAKVoUSCLYAKgFC0KZBFMAJSiRYEsggmAUrQokEUwAVCKFgWyCCYAStGiQBbBBEApWhTI\nIpgAKEWLAlkEEwClaFEgi2ACoBQtCmQRTACUokWBLIIJgFK0KJBFMAFQihYFsggmAErRokAWwQRA\nKVoUyCKYAChFiwJZBBMApWhRIItgAqAULQpkEUwAlKJFgSyCCYBStCiQRTABUIoWBbIIJgBK0aJA\nFsEEQClaFMgimAAoRYsCWQQTAKVoUSCLYAKgFC0KZBFMAJSiRYEsggmAUrQokEUwAVCKFgWyCCYA\nStGiQBbBBEApWhTIIpgAKEWLAlkEEwClaFEgi2ACoBQtCmQRTACUokWBLIIJgFK0KJBFMAFQihYF\nsggmAErRokAWwQRAKVoUyCKYAChFiwJZBBMApWhRIItgAqAULQpkEUwAlKJFgSyCCYBStCiQRTAB\nUIoWBbIIJgBK0aJAFsEEQClaFMgimAAoRYsCWQQTAKVoUSCLYAKgFC0KZBFMAJSiRYEsggmAUrQo\nkEUwAVCKFgWyCCYAStGiQBbBBEApWhTIIpgAKEWLAlkEEwClaFEgi2ACoBQtCmQRTACUokWBLIIJ\ngFK0KJBFMAFQihYFsggmAErRokAWwQRAKVoUyCKYAChFiwJZBBMApWhRIItgAqAULQpkEUwAlKJF\ngSyCCYBStCiQRTABUIoWBbIIJgBK0aJAFsEEQClaFMgimAAoRYsCWQQTAKVoUSCLYAKgFC0KZBFM\nAJSiRYEsggmAUrQokEUwAVCKFgWyCCYAStGiQBbBBEApWhTIIpgAKEWLAlkEEwClaFEgi2ACoBQt\nCmQRTACUokWBLIIJgFK0KJBFMAFQihYFsggmAErRokAWwQRAKVoUyCKYAChFiwJZBBMApWhRIItg\nAqAULQpkEUwAlKJFgSyCCYBStCiQRTABUIoWBbIIJgBK0aJAFsEEQClaFMgimAAoRYsCWQQTAKVo\nUSCLYAKgFC0KZBFMAJSiRYEsggmAUrQokEUwAVCKFgWyCCYAStGiQBbBBEApWhTIIpgAKEWLAlkE\nEwClaFEgi2ACoBQtCmQRTACUokWBLIIJgFK0KJBFMAFQihYFsggmAErRokAWwQRAKVoUyCKYAChF\niwJZBBMApWhRIItgAqAULQpkEUwAlKJFgSyCCYBStCiQRTABUIoWBbIIJgBK0aJAFsEEQClaFMgi\n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\nSoTuqwGgF8HkqXnpm/ZsWqaS4QsGAVyBYPJWk0dzNmkb01uM4N0COksA/ggmv9WLvsotTMqLeytV\nHt+W/Tbd/xwAzEAweW45jvboOGXioveti0VXSftoIgCTEExYZ9Mtzs7uOVV5snpHUgnAEsGEvzYq\nomVS3MIkF6e8UV1m8eqdgssHEAGYjmBCrynW3ZjbLUoyoXBJhCiyOFi/Q5yZtcUXgBEIJszq/L6J\njkd4POJJLj6aNpLC7etGaan71wVgJoIJa9VTz6kbcYvvWS7EoVG3SpRZGkfPL/boKR17JQBeIZjw\nrBHZ/UU69QkVx1nWhtTDZqCv+1r5+NskfplHXSalBcN3AD4imPDGI52Sd/HyiyDOyCQAOxBM+Kh6\nxFMcyEVS9Igkxu4A7EUwYY9K5I+AOtaBCtpBv5JEAnAQwYRDaiGKfhbpYZNEYffFx99mQgjdFwrA\nWgQTAMAoBBMAwCgEEwDAKAQTAMAoBBMAwCgEEwDAKAQTAMAoBBMAwCgEEwDAKAQTAMAoBBMAwCgE\nEwDAKAQTAMAoBBMAwCgEEwDAKAQTAMAoBBMAwCgEEwDAKAQTAMAoBBMAwCgEEwDAKAQTAMAoBBMA\nwCgEEwDAKAQTAMAoBBMAwCgEEwDAKAQTAMAoBBMAwCgEEwDAKAQTAMAoBBMAwCgEEwDAKAQTAMAo\nBBMAwCgEEwDAKAQTAMAoBBMAwCgEEwDAKAQTAMAoBBMAwCgEEwDAKAQTAMAoBBMAwCgEEwDAKAQT\nAMAoBBMAwCgEEwDAKAQTAMAoBBMAwCgEEwDAKAQTAMAoBBMAwCgEEwDAKAQTAMAoBBMAwCgEEwDA\nKAQTAMAoBBMAwCgEEwDAKAQTAMAoBBMAwCgEEwDAKAQTAMAoBBMAwCgEEwDAKAQTAMAoBBMAwCgE\nEwDAKAQTAMAoBBMAwCgEEwDAKAQTAMAo/w1HXcarykv3PQAAACV0RVh0ZGF0ZTpjcmVhdGUAMjAx\nNS0wMi0xNlQxMzozMzoxOSswMDowMJpRGa4AAAAldEVYdGRhdGU6bW9kaWZ5ADIwMTUtMDItMTZU\nMTM6MzM6MTkrMDA6MDDrDKESAAAAAElFTkSuQmCC\n",
      "text/plain": [
       "<IPython.core.display.Image object>"
      ]
     },
     "execution_count": 29,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "Image(filename='../images/1/student.png')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Considering that $ D $ has cardinality of 2, $ I $ has cardinality of 2, $ S $ has cardinality of 2, $ G $ has cardinality of 3 and $ L $ has cardinality of 2. Also the parameters in this network would be $ P(D) $, $ P(I) $, $ P(S | I) $, $ P(G | D, I) $, $ P(L | G) $. So, the number of values needed would be $ 2 $ for $ P(D) $, $ 2 $ for $ P(I) $, $ 12 $ for $ P(G | D, I) $, $ 6 $ for $ P(L | G) $, $ 4 $ for $ P(S | I) $, total of $ 4 + 6 + 12 + 2 + 2 = 26 $ compared to $ 2 * 2 * 3 * 2 * 2 = 48 $ required for the Joint Distribution over all the variables. "
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### Types of Graphical Models\n",
    "\n",
    "There are mainly 2 types of graphical models:\n",
    "1. Bayesian Models: A Bayesian Model consists of a directed graph and Conditional Probability Distributions(CPDs) associated with each of the node. Each CPD is of the form $ P(node | parents(node)) $ where $ parents(node) $ are the parents of the node in the graph structure.\n",
    "2. Markov Models: A Markov Models consists of an undirected graph and are parameterized by Factors. Factors  \n",
    "represent how much 2 or more variables agree with each other."
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.4.5"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 0
}
